package com.ito.areaTrabajo.control;


import java.util.logging.Logger;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Auxheader;
import org.zkoss.zul.Div;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.ito.areaTrabajo.modelo.dao.ProyectoDao;
import com.ito.ito.areaTrabajo.modelo.Gplantillas;
import com.ito.ito.areaTrabajo.modelo.Plantilla;
import com.ito.ito.areaTrabajo.modelo.Proyecto;
import com.ito.ito.areaTrabajo.modelo.Usuario;

public class NuevoProyectoComposer extends SelectorComposer<Component> {
	/**
	 * 
	 */
	
	private static final long serialVersionUID = 1L;
	@Wire
	private Textbox nombreProyecto;
	@Wire
	private Auxheader nomProyecHeader;
	@Wire
	private Div part1, part2;
	// solicitud proyecto
	@Wire
	private Textbox nombreEmpresa;
	@Wire
	private Textbox giro;
	@Wire
	private Textbox direccionEmpresa;
	@Wire
	private Textbox telefonoEmpresa;
	@Wire
	private Textbox areaEmpresa;
	@Wire
	private Textbox nombreSolicitante;
	private static Logger logger = Logger.getLogger(NuevoProyectoComposer.class
			.getName());

	// registro proyecto
	@Listen("onClick=#crearSolBtn")
	public void regProy() {
		if (!validaCampo()) {
			logger.fine("valores de entrada incorrectos");
			return;
		}
		Proyecto proyecto = new Proyecto();
		proyecto.setNombreProyecto(nombreProyecto.getValue());
		proyecto.setNombreEmpresa(nombreEmpresa.getValue());
		proyecto.setGiroEmpresa(giro.getValue());
		proyecto.setDireccion(direccionEmpresa.getValue());
		proyecto.setTelefono(telefonoEmpresa.getValue());
		proyecto.setAreaEmpresa(areaEmpresa.getValue());
		proyecto.setNombreSolicitante(nombreSolicitante.getValue());

		Gplantillas gplantillas = new Gplantillas();

		gplantillas.getPlantillas().add(new Plantilla("Portada"));
		gplantillas.getPlantillas().add(new Plantilla("ControlVersiones"));
		gplantillas.getPlantillas().add(new Plantilla("ControlRevisiones"));
		gplantillas.getPlantillas().add(new Plantilla("EncabezadoPie"));
		gplantillas.getPlantillas().add(new Plantilla("DocumentoRequerimientos"));
		gplantillas.getPlantillas().add(new Plantilla("SolicitudRequerimientos"));
		gplantillas.getPlantillas().add(new Plantilla("MatrizTrazabilidad"));
		gplantillas.getPlantillas().add(new Plantilla("CasosPrueba"));
		gplantillas.getPlantillas().add(new Plantilla("CriteriosDeAceptacion"));
		gplantillas.getPlantillas().add(new Plantilla("RequerimientosCasoDeUso"));
		
		
		proyecto.setGplantillas(gplantillas);

		Usuario usuario = (Usuario) Executions.getCurrent().getSession()
				.getAttribute("usuario");
		// usuario.getProyecto().add(proyecto);
		// UsuarioDao usuarioDao = new UsuarioDao();
		// usuarioDao.persist(usuario);

		proyecto.getUsuarios().add(usuario);
		ProyectoDao proyectoDao = new ProyectoDao();
		proyectoDao.persist(proyecto);

		Messagebox.show("Se ha registrado el proyecto: "+ nombreProyecto.getValue(), "Proyecto registrado",Messagebox.OK,Messagebox.INFORMATION,new EventListener<Event>() {
			
			@Override
			public void onEvent(Event event) throws Exception {
			
				Executions.sendRedirect("/ED/encargado_home.zul");
			}
		});

	}

	private boolean validaCampo() {
		if (nombreProyecto.getValue().length() == 0) {
			return false;

		}
		if (nombreEmpresa.getValue().length() == 0) {
			return false;
		}
		if (giro.getValue().length() == 0) {
			return false;
		}
		if (direccionEmpresa.getValue().length() == 0) {
			return false;
		}
		if (telefonoEmpresa.getValue().length() == 0) {
			return false;
		}
		if (areaEmpresa.getValue().length() == 0) {
			return false;
		}
		if (nombreSolicitante.getValue().length() == 0) {
			return false;
		}
		return true;
	}

	@Listen("onClick=#crearProyecto")
	public void muestraFormulario() {
		//
		nomProyecHeader.setLabel("Datos solicitud proyecto "
				+ nombreProyecto.getValue());
		part1.setVisible(false);
		part2.setVisible(true);
		//
		
	}

	public void doAfterCompose(Component component) throws Exception {
		super.doAfterCompose(component);
		part1.setVisible(true);
		part2.setVisible(false);
	}

	public void reiniciaCampos() {
		nombreProyecto.setValue("");
		nombreEmpresa.setValue("");
		giro.setValue("");
		direccionEmpresa.setValue("");
		telefonoEmpresa.setValue("");
		areaEmpresa.setValue("");
		nombreSolicitante.setValue("");
		part1.setVisible(true);
		part2.setVisible(false);
		
		

	}

}
